home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Everything For A Hacker
/
19990506-[HACK].iso
/
SECURE
/
CRYPT
/
GOST.ZIP
/
GAMME.ASM
< prev
next >
Wrap
Assembly Source File
|
1995-05-09
|
3KB
|
98 lines
;------------------------------------------------------
; âÑ¡Ñαᵿ∩ ¼áßß¿óá ¬α¿»Γ«úαáΣ¿τÑ߬«⌐ úá¼¼δ ß«ú½áß¡«
; ¬α¿»Γ«á½ú«α¿Γ¼π âÄæÆ 28147-89.
; Éáºαáí«Γá½ é¿¡«¬πα«ó Ç.₧., ú.î«ß¬óá, 1992-1995 ú.
; (C)1992-1995, æó«í«ñ¡«Ñ ¬«»¿α«óá¡¿Ñ ¿ ¿ß»«½∞º«óá¡¿Ñ.
;------------------------------------------------------
; Åáαá¼ÑΓαδ »α¿ ó맮óÑ »ÑαÑñáεΓß∩ ó ßΓφ¬Ñ :
; æ¼ÑΘÑ¡¿Ñ ÉẼÑα Å Ç É Ç î à Æ É
;NEAR FAR
; 2 4 4 FAR-áñαÑß ¬½ετá
; 6 8 4 FAR-áñαÑß ß¿¡σα«»«ß佬¿ (S1,S2)
; 10 12 4 FAR-áñαÑß Γáí½¿µδ ºá¼Ñ¡
; 14 16 4 FAR-áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩
; 18 20 2 τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
;------------------------------------------------------
; Åα¿ óδσ«ñÑ: áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ ¿ ñ½¿¡á
; ß«ñÑαªáΓ ß¬«ααÑ¬Γ¿α«óá¡¡δÑ »áαá¼ÑΓαδ
;------------------------------------------------------
; çá¼Ñτá¡¿∩:
; 1. äá¡¡á∩ »α«µÑñπαá óδαáíáΓδóáÑΓ úá¼¼π í½«¬á¼¿ »« 8
; íá⌐Γ«ó, τΓ« «ΓαáªáÑΓ ßó«⌐ßΓó« ¿ß»«½∞º«óá¡¡«ú« á½ú«-
; α¿Γ¼á íδΓ∞ í½«τ¡δ¼ Φ¿Σα«¼.
;------------------------------------------------------
; «»αÑñѽ∩Ѽ ¬«¡ßΓá¡Γδ C1,C2 »« âÄæÆ
;
C1low equ 0101h
C1high equ 0101h
C2low equ 0104h
C2high equ 0101h
;
.model small,C
.code $gost
extrn gost:near
gamme proc
public gamme
; óδτ¿ß½∩Ѽ ß¼ÑΘÑ¡¿Ñ »áαá¼ÑΓα«ó ó ßΓφ¬Ñ
a=8 ; 4 αÑú¿ßΓαá ó ßΓφ¬Ñ
IF (TYPE gamme) EQ 0FFFEh
a=a+2 ; Ñß½¿ gamma - far-»α«µÑñπαá
ENDIF
; çáñáѼ ß¼ÑΘÑ¡¿Ñ áαúπ¼Ñ¡Γ«ó ó ßΓφ¬Ñ
;
key= 2+a
syn= 6+a
chg= 10+a
con= 14+a
tar= 14+a
len= 18+a
;
; æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó ß«ú½áß¡« ß«ú½áΦÑ¡¿∩¼ Turbo C
push BP
push DS ; φΓ« ¡πª¡« ¡Ñ óßÑúñá !
push SI
push DI
; ¡áßΓα«⌐¬á αÑú¿ßΓα«ó
mov BP,SP ; ßΓφ¬«óδ⌐ ¬áñα
lds BX,chg[BP] ; DS:BX <- áñαÑß Γáí½.ºá¼Ñ¡
; ä«íáó½Ñ¡¿Ñ ¬«¡ßΓá¡Γ
circle: les SI,syn[BP] ; áñαÑß ß¿¡σα«»«»δ½¬¿
mov AX,ES:[SI] ; AX <- ¼½áñΦÑÑ ß½«ó« S1
mov DX,ES:2[SI] ; DX <- ßΓáαΦÑÑ ß½«ó« S1
mov DI,ES:4[SI] ; DI <- ¼½áñΦÑÑ ß½«ó« S2
mov CX,ES:6[SI] ; CX <- ßΓáαΦÑÑ ß½«ó« S2
add AX,C1low ; ¿º¼Ñ¡Ñ¡¿Ñ S1:
adc DX,C1high ; S1=(S1+C1) mod 2^32
adc DI,C2low ; ¿º¼Ñ¡Ñ¡¿Ñ S2:
adc CX,C2high ; S2=(S2+C2) mod (2^32-1)
adc DI,0 ; Ñß½¿ íδ½ »ÑαÑ¡«ß, ¡áñ«
adc CX,0 ; ñ«íáó¿Γ∞ 1 ¬ αѺπ½∞ΓáΓπ
mov ES:[SI],AX ; ºá¡«ß¿¼ ¡«óδÑ
mov ES:2[SI],DX ; º¡áτÑ¡¿∩ S1,S2
mov ES:4[SI],DI ; ¡á ¿σ
mov ES:6[SI],CX ; ¼ÑßΓ« !!!
; â«Γ«ó¿¼ αÑú¿ßΓαδ ñ½∩ ó맮óá µ¿¬½á 32-ç;
les SI,key[BP] ; ES:SI <- áñαÑß ¬½ετá
mov BP,CX ; BP <- ßΓáαΦÑÑ ß½«ó« S2
mov CX,32 ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
call gost ; Φáú »α«ßΓ«⌐ ºá¼Ñ¡δ
mov CX,BP ; CX <- ßΓáαΦÑÑ ß½«ó« S2
mov BP,SP ; BP <- ßΓѬ«óδ⌐ ¬áñα
; êß»«½∞º«óá¡¿Ñ ßúÑ¡Ñα¿α«óá¡¡«ú« í½«¬á úá¼¼δ
les SI,tar[BP] ; DS:SI<-áñαÑß ¡áº¡áτÑ¡¿∩
mov ES:[SI],DI ; çá¡«ß¿¼
mov ES:2[SI],CX ; 8-íá⌐Γ¡δ⌐ í½«¬
mov ES:4[SI],AX ; úá¼¼δ ó «í½áßΓ∞
mov ES:6[SI],DX ; ¡áº¡áτÑ¡¿∩
add word ptr tar[BP],8; ¬«ααѬµ¿∩ π¬áºáΓѽ∩
dec word ptr len[BP] ; ¬«ααѬµ¿∩ ßτÑΓτ¿¬á
jnz circle ; ¡á úÑ¡Ñαáµ¿ε ¡«ó«ú« í½«¬á
; é«ßßΓá¡«ó½Ñ¡¿Ñ αÑú¿ßΓα«ó ¿º ßΓφ¬á
pop DI
pop SI
pop DS
pop BP
ret
gamme endp
end